home *** CD-ROM | disk | FTP | other *** search
- {
- JONATHAN WRIGHT
-
- > A/D (analog to digital conversion). Somehow I need to use the PC
- > clock/timer to call my A/D sampling interrupt at various rates from
- > several hundred Hz to several thousand Hz.
-
- > Hook interrupt 1Ch and point it to your interrupt handler. Use
- > a counter in this procedure to count the number of interrupts or
-
- This will not work correctly. Using interrupt 1Ch as it is normally set up,
- your interrupt routine will only be called 18 times a second (18.2, actually),
- so you could get a maximum of 18.2 Hz. If you wait until a counter in this
- interrupt (incremented by 1 each time) reaches 1820, it will take 10 seconds!
- It WON'T be 100 Hz.
-
- In order to hook the timer interrupt at a rate above 18.2 Hz, you'll need to
- revector int 08h (which calls int 1Ch anyway). You'll have to set up a counter
- in int 08h which makes sure that the ORIGINAL int 08h routine is still called
- 18.2 times a second. The value for this counter will vary, depending on how
- fast you set timer channel 0. The system clock has a maximum resolution of
- about 1.19318 Mhz and IRQ0 is normally called 1193180/65536 times per second.
-
- Here's some code for changing the clock rate (sorry but it's ASM):
- }
- ;*********************
- ; called by SetClockRate (which is Pascal callable)
-
- ClkRate PROC NEAR
-
- push ax
- mov al,36h
- out 43h,al
- pop ax
- out 40h,al xchg ah,al
- out 40h,al
- ret
- ClkRate ENDP
-
- ;******************
- ; call this routine from TP as SetClockRate (Hz : WORD);
- SetClockRate PROC FAR
-
- Rate EQU word ptr [bp+06]
- push bp
- mov bp,sp
- cmp rate,0
- je SCR01
-
- mov ax,65535
- xor dx,dx
- mov bx,rate
- div bx
- jmp SCR02
-
- SCR01:
- xor ax,ax
-
- SCR02:
- call ClkRate
-
- mov sp,bp
- pop bp
- ret 2
-
- SetClockRate ENDP
-
- I pulled these procedures from some OLD code which I may have inadvertenly
- screwed up over time, but it looks o.k.
- Actually revectoring int 08h is a bit more complex - you MUST make sure the
- old it 08 is called appropriately because it controls a number of system
- functions and your PC WILL lock up if it's not called. I recommend finding a
- book to help with that part.